// Copyright 2017 ETH Zurich and University of Bologna.
// Copyright and related rights are licensed under the Solderpad Hardware
// License, Version 0.51 (the “License”); you may not use this file except in
// compliance with the License.  You may obtain a copy of the License at
// http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
// or agreed to in writing, software, hardware and materials distributed under
// this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
__attribute__ ((section(".tcdm"))) static const int consta[4] = {
0x91819181,	0x12E012E0,	0x0C5F0C5F,	0x09AD09AD,
};

__attribute__ ((section(".tcdm"))) static const int constb[4] = {
0x0CAC0CAC,	0x07990799,	0x0E810E81,	0x0CFB0CFB,
};

__attribute__ ((section(".tcdm"))) static const int A[200] = {
0x0750835A,	0x0F4484ED,	0x0C3A0B95,	0x7F4075F1,
0x07221082,	0x81420DA6,	0x08F908D3,	0x0BF307C2,
0x81270B89,	0x0226075A,	0x0AE38EE1,	0x8C560D46,
0x822D8830,	0x7F0D10C6,	0xFD5F8617,	0x90EF1074,
0x107A8D81,	0x06B6858C,	0x0A5A0A9B,	0x8BEE0CF3,
0x07630EAE,	0x8DAB7C82,	0x8E3C0849,	0x0FE291F4,
0xF8D18FA5,	0x8AD80198,	0x912DFF35,	0x0C910EDA,
0xFCD58BFA,	0x8E140DAF,	0x0DB30886,	0x11A40C3D,
0xFFF70717,	0x81BE8423,	0x8D9F0897,	0x87E287FD,
0x86070989,	0x8DA08B9A,	0xF33B0F05,	0x88810F61,
0x0D008EEA,	0x06E40531,	0x8C388520,	0x10B50FC5,
0x8B0F8D7A,	0x8BA10E5B,	0x071D0DF3,	0x045E8CFB,
0x0B9F0FBD,	0xF7D3040C,	0x0D1B0986,	0x0EE006A6,
0x8A0F0FE3,	0x0FD891AA,	0x0B0B0A08,	0x0F468B59,
0x8A4A0DEC,	0x0563899A,	0x09190848,	0xF938926C,
0x0FFD8E05,	0x07379121,	0x83027D54,	0x024F8F99,
0x01E30B54,	0x7F998B8B,	0x0B9D088A,	0x09900DFC,
0x0C87F35D,	0x89877FDA,	0x10B98C52,	0x8D2074C0,
0x094289DA,	0x11600A09,	0x0AC50EBE,	0x05CC026A,
0x05310D78,	0x8EC88C6E,	0xFF9F0A0E,	0x0F290F77,
0x0D440CF0,	0x10B97FFE,	0x84C9F5AC,	0x8CB88C23,
0x0B33FD9B,	0x06860EEE,	0x81C98BA0,	0x0F8E85DD,
0x0CE68CA2,	0x10668B51,	0x0386882B,	0x12E289A2,
0x8E308D73,	0x91E40D66,	0x0F480E37,	0x8F8692D8,
0x8D430E9B,	0x0B348935,	0x87A00CE2,	0x8C4C0B84,
0x8A2B80C8,	0x87F68474,	0x8BF58D71,	0xF9550AFF,
0x92EC8C8A,	0x8BCD0B1F,	0x80CC8DDD,	0x0E789192,
0x88320512,	0x8B168D60,	0x10340744,	0x887791D9,
0x0BFB092A,	0x908B7F12,	0x8ECC0656,	0x0F758F47,
0x869607C2,	0x77BA8A93,	0x8F5490AB,	0x0EEA8307,
0x789F8C6F,	0x08D30926,	0x86E48D7D,	0x8C498F1C,
0x7CE4FE0C,	0x0B8B9080,	0x8FAA04E8,	0x105603BC,
0x0D7D0F5A,	0x0B460AFC,	0x84480EC0,	0x8CBE0BD2,
0x0A8408DC,	0x0BF51076,	0x88348C05,	0x10A6123D,
0x08B60051,	0x79D11350,	0x7DC90C30,	0x8F450B08,
0x8DD08FEF,	0x88CD0C4D,	0xFD2908E5,	0x8E108D5D,
0x8C4F857C,	0x90508C26,	0x7C300737,	0x8CA88D1A,
0x0C8D850A,	0x06A10D9A,	0x8A020F04,	0xFE678FDB,
0x8AFC0EF0,	0x0B3B8E37,	0x8F8D863F,	0x070F0E1E,
0x0C070465,	0x0A8A8887,	0x0C480BEF,	0x8A3B7C72,
0x0F8D7DD3,	0xFF530FD1,	0x0C6A9280,	0x08EF877C,
0x04188C54,	0x88538A4B,	0x8B430E14,	0x0425FA31,
0x8E41EFB3,	0x7B690A4C,	0x7A830AF1,	0x8B0A8767,
0x101900DA,	0x057109CB,	0x06020B56,	0x8EE38973,
0x09E71149,	0x871A073A,	0x0AA3892B,	0x81E40966,
0x0CD3132D,	0x038C840A,	0x05288E12,	0x11D10EB5,
0x82EE8732,	0x0FEB038E,	0x081905EC,	0xFFC10E8D,
0x8A7D0D2C,	0x8CD70A8F,	0x88777A9D,	0x14B38C1A,
0x8C0B8D77,	0x0E4A08B2,	0x0BE7FFC8,	0x8C818670,
0x8DE2081F,	0x0DAF1210,	0x85928998,	0x09A48004,
};

__attribute__ ((section(".tcdm"))) static const int B[200] = {
0x902F913E,	0x0B70872B,	0x08718302,	0x0A5F8F25,	0x81488E8B,
0x07A564B1,	0xF7C9913A,	0x889A14CA,	0x02DE06BC,	0x0D1A8604,
0x06E8882C,	0x7C65882E,	0x0B77920C,	0x83EA0855,	0x0A6E07A7,
0x9080078F,	0x8AFC0C09,	0x060A11BB,	0x897D8DE7,	0x8CB17A32,
0x0F0D106B,	0x8DF40960,	0x8CE306E5,	0x83E78EBC,	0x10668FCA,
0x80BF8CD3,	0x8ED00B7C,	0x8EB70DCC,	0x0EC289DB,	0x01EBFCE6,
0xF7210B9A,	0x129C0462,	0x11A5022A,	0x9160123D,	0x0F4990ED,
0x05280E1A,	0x05668B60,	0x8CCD873D,	0x02C98028,	0x8BDB8143,
0x07F291FD,	0x88E80B3A,	0x0EAE0A47,	0x83148B64,	0x87F70156,
0x7A4D089E,	0x89C58CEE,	0x01E088FA,	0x104D8847,	0xF1368851,
0x0EF90503,	0x0892F53B,	0x8FA7867D,	0x83D90A90,	0x8DF70A1C,
0x0D5810CC,	0x0CC08A17,	0x0CEE803C,	0x0C260BE2,	0x0A6A8E48,
0x0DB38F31,	0x88F40FA3,	0x057F0B45,	0x10640CA8,	0x0D4C9008,
0x8E7B8643,	0x04511111,	0x76940E63,	0x07CC0F99,	0x05251185,
0x076B1200,	0x09898BE0,	0x12B086EC,	0x0E977AC0,	0x8E531039,
0x8173FD83,	0x903B0893,	0x82528B4A,	0x8E4CFCE0,	0x0D200C66,
0x8E008D25,	0x906E060B,	0x8F82101D,	0xF5F90600,	0x8C9C77F8,
0x114F019D,	0x8A820E9F,	0x0C150524,	0x000B85FC,	0x833910AA,
0x095909BB,	0x0D478A51,	0x090890E3,	0x0EF90B97,	0x004E8CCE,
0x0DE67749,	0x8B2B0FBD,	0x88700525,	0x06FB0CB9,	0x8A91FE3A,
0x8DEA07A0,	0x086F06A2,	0x10778FC1,	0x8E6E0D33,	0x068A0AB0,
0x8A9E0D86,	0x7A9DFC56,	0x08AA8CB0,	0x08288D40,	0x858B0DED,
0x88890A5B,	0x0BAFFF7A,	0x81580E7D,	0x8C850C8B,	0x0C520279,
0x09DF8B6E,	0x8B988019,	0x8C028674,	0x02760EE7,	0x0B990E96,
0x8F11085D,	0x8D7709FE,	0x889C8DBC,	0x90520CEC,	0x8D741265,
0x6FAB8C9E,	0x117E7A6D,	0x0CEE0B44,	0x07B8898D,	0x083F0319,
0x92510FE3,	0x110585F4,	0x0BA58BC9,	0x85A20C62,	0x92658D94,
0x8C5A8951,	0x0CFE8A71,	0x0C1E8B43,	0x09050C07,	0x84669160,
0x8F4D799E,	0x8B948C5E,	0x04987B57,	0x7D927BCA,	0x01E008A6,
0x0A878B67,	0x08240739,	0x8F3508A2,	0x82700C75,	0x8CED0689,
0x09C38C96,	0x87FD7CBC,	0x7AD7FCEB,	0x10A5912D,	0x10CB04BA,
0x8F5D83FD,	0x80CB0F5E,	0x88A5EFFC,	0x0A798A52,	0x85FF8DC6,
0x894A883D,	0x8D50F70E,	0x7DC8F2B6,	0x8E3C8AD1,	0xF8628E67,
0x8D318C61,	0x8E130EBF,	0x0F948BD3,	0x0CC9123B,	0x86570142,
0x88238B7B,	0x084F8C9E,	0x0A587912,	0x78820AD4,	0x08B37E93,
0x805E06E4,	0x0D9D0631,	0x8CF57D4D,	0x0EAA120E,	0x116C907F,
0x89798D7A,	0x8C098CF4,	0x0D778F81,	0x04948D82,	0x8DC10CE3,
0x0E6800D5,	0x8402FF1B,	0x0ABE8794,	0x8A940CDE,	0x041A0FF0,
0x88F47F65,	0x7DE6FF41,	0x82F58E52,	0x9080886B,	0x8EE890DB,
0x8E4B8400,	0x8CD706E9,	0x11C40A4B,	0x81E10B74,	0x8AA98A28,
};

__attribute__ ((section(".tcdm"))) static const int C_init[200] = {
0x0F2787B9,	0x0AA91392,	0x0C957494,	0x0EDD8B8C,
0xFE548FBC,	0x80E17C04,	0x89628C26,	0x8EED0B8A,
0xFBD58903,	0x09120CDC,	0xF9C98E95,	0x86BE91F8,
0x09BB10C4,	0x0EA6840B,	0x05870CDC,	0x8C8B0B26,
0x0C440AFF,	0x0FAB91EA,	0x10690D72,	0x08121131,
0x8E31867D,	0x0E3A8E73,	0x0CB90D6D,	0x092307BF,
0x8F538CCE,	0x0E798B5B,	0x0C1F10E7,	0x8A8A883B,
0x07C303F5,	0xFB9A09A7,	0x0E539183,	0xFFD18BEF,
0x8A008E59,	0x04FD0B50,	0x8B6E0C79,	0xDD010457,
0x06AE0F6B,	0x0E640C40,	0x83F48886,	0x7F008AC5,
0xF1F58F42,	0x0D60082A,	0x0B5D81B1,	0x897B7AD2,
0x866F89D0,	0x0EFB0CB4,	0x0A748C26,	0x08BB89DB,
0x0CC3FFFC,	0x106C0CEC,	0x0F190D68,	0x8A680D7F,
0x03B20F99,	0x88BF0ED8,	0x9009792F,	0x11DD0F9C,
0x8FCC8824,	0x01EF87FE,	0x09D28B7E,	0x8BF887D2,
0x0EC60E07,	0x86800C3F,	0x86D48A48,	0x8D8E8EFF,
0x8E9D8CA2,	0x0CF38EE0,	0x84470A56,	0x08C0845E,
0x78B08B0C,	0x91038313,	0x0E2D8F89,	0x8C8F8F3B,
0x8CEA0F07,	0x079F0E3A,	0x8C780B27,	0xF8BB6CEA,
0x07BF86A9,	0x8E2C88DD,	0x827F87EE,	0x079F8D9A,
0xFEA38587,	0x084C0D56,	0x0E310FA3,	0x0D4990D7,
0x802B12E7,	0x0F417826,	0x8E608B49,	0xF920897E,
0x8E6C8D8D,	0x035F0B1C,	0x8DBF116C,	0x907F866E,
0x9279081C,	0x0E68FF7F,	0x8FF40AED,	0x8769847D,
0x80F10DC7,	0x0CC70BC8,	0x82B80221,	0x02CA1257,
0x0DBF8D7C,	0x8A3E8B30,	0x02F10757,	0x0AAA0712,
0x0E6D843F,	0x8CFE9129,	0x036201D3,	0x0E700E3C,
0x0DCB79F7,	0x0D5A8B6F,	0x83D38D2E,	0x0EDD86F2,
0x87CA0387,	0x03AE880C,	0x05C48852,	0x876808AD,
0x0CC30FA6,	0x008882D2,	0x7DCE0F06,	0x875A7AE8,
0x11CF911F,	0x8AF40D13,	0x8AB1080A,	0x0EAE0096,
0x061F89E4,	0x81447F7A,	0x0DE209DF,	0x8FD48BE2,
0x09121175,	0x10458AE3,	0x904407B0,	0x0AF18D4F,
0x8AA08B53,	0x87771147,	0x05BA88C8,	0x92BA0856,
0x89E1030F,	0x84A8837F,	0x89B90E30,	0x8C2C8622,
0x78168686,	0x057A85E6,	0x832A8B0A,	0x88AD8E16,
0x8DC00DB0,	0x89EC9172,	0x8E2486DE,	0x91A60D17,
0x8ADC8FC8,	0x06FE0730,	0x11F88FE8,	0x0A8C0E13,
0x89A10F4B,	0x89338987,	0x8A451138,	0x83530BB8,
0x00C61042,	0x0F1387B5,	0x092D0DFF,	0x8B138DE1,
0x7DB288F6,	0x05BE8E57,	0x8BEC09C6,	0x90318CAA,
0x0E2E04CA,	0x8A8602AF,	0x10330AC8,	0x0BC30D3E,
0x0F8C87FD,	0x041B888E,	0x8D829264,	0x0EA488C9,
0x0C5D8E03,	0x08850E60,	0x8B3D9181,	0x03298DA9,
0x87748932,	0x84D30D01,	0x09EA0EA7,	0x7CB48CC1,
0x04AF04FC,	0x91DE0986,	0x0DD80CD9,	0x8A349060,
0x8F0E832B,	0x81210FBF,	0x7FB90629,	0x0F868DE0,
0x86D8091F,	0x82B41049,	0x84A3078A,	0x890881CE,
0x06B78611,	0x0E0494EE,	0x7F000AB6,	0x8D7284FA,
0x83D981E9,	0x8F608478,	0x8BFC095E,	0x0746826B,
};


__attribute__ ((section(".tcdm"))) static const float exp[16] = {
84845.034339F,	83164.934649F,	40580145.318982F,	40499066.107555F,
58609.117629F,	57448.541042F,	71029373.075093F,	70887456.245772F,
3996.847783F,	3917.702282F,	5187172.573849F,	5176808.592683F,
-5729.073331F,	-5844.812186F,	1823470.251978F,	1819826.954771F,
};
